Databases are the convenient means for storing the data of a countless number of applications, including all sorts of technical, scientific, educational, industrial or commercial applications. Each database is managed through a database management system (DBMS), a suite of programs designed to let many users have access simultaneously to the stored data by issuing queries, i.e., requests to retrieve specific information from the database.
Relational databases are often used which organize data into tables made of a collection of rows or records and where each row in a table contains the same fields. Relational databases are then typically accessed using an industry standard language such as SQL which stands for structured query language.
Over time, constant improvements brought to better organize the stored data and the queries to retrieve the searched information from an ever growing number of users have dramatically improved databases processing efficiency. Combined with advances in computer hardware and storing capacities current large database management systems are indeed able to manage concurrently hundreds and even thousands of requests on databases containing millions of records if not billions of them for the largest.
In spite of all the performance improvements brought to databases the level of expectation of those who are putting together the information and the end-users of them has grown at an even faster pace. Especially, more and more sophisticated software applications need in fact to access several databases to operate and provide their services to numerous end-users. An example of such a system is shown in FIG. 1 where a particular software application (100) needs to process data gathered, for example, from three independent databases (111, 121 and 122) to become capable of answering user's requests (130) so that to deliver them the requested information (150). In this particular example, yet typical of the kind of applications considered by the invention, the independent databases are assumed to be managed by two different organizations having their own systems (110, 120) and which are the providers of information (115, 125) needed by the software application (100) to accomplish its task. Typically, the interface with the end-users is achieved through a web site so that a world-wide access is possible from any personal computer connected to the Internet and equipped with a standard web browser. Requests are then issued directly by the end-users from the site interface (130) and responses delivered e.g., under the form of dynamic web pages to their respective browsers (140). The application software (101) is thus in charge of processing the information that is collected from the various databases that must be consulted to format a response. Generally, to expedite the interrogations of the databases, a dedicated engine is needed per information provider system. Two are shown (102, 103) in the example of FIG. 1.
The typical system illustrated in FIG. 1 works well as long as the amount of information to be collected from the databases in order to format a response to the end-users in an acceptable elapsed time (i.e., in practice, within a few seconds maximum) stays relatively low. However, in spite of all the here above mentioned improvements brought to databases over the years, the ‘cost’ of processing database transactions (i.e., the processing time and the resources required to execute a query) is often detrimental to actually achieve this objective when the number of queries that must be issued by the application, to be able to answer end-user requests, is significantly growing. Also, the amount of active memory required by the software application to temporarily store all the transferred pieces of information from the databases may become prohibitive in view of the number of end-users that must be simultaneously supported. This is however what the more recent sophisticated software applications tend now to require in an attempt to offer to end-users of those web sites an always broader level of services.
It is thus a broad object of the invention to overcome the difficulties mentioned here above when a large amount of information must be gathered from several databases by a software application to format responses to end-users in an acceptable elapsed time.
It is more specifically an object of the invention to disclose a method of preprocessing database contents to expedite the search of information and reduce the overall amount of data that need to be transferred and processed by the software application.
It is also an object of the invention to permit that data-intensive software applications become feasible in the framework of a web site capable of supporting simultaneously numerous remote users.
Further objects, features and advantages of the present invention will become apparent to the ones skilled in the art upon examination of the following description in reference to the accompanying drawings. It is intended that any additional advantages be incorporated herein.